When reverse engineering software, an analyst may often only have binary code to work with. The binary code is made up of a multitude of zeroes and ones that can be directly executed by a processor but are difficult for a person to read and understand. In some cases, the binary code can be translated into a different form to make reading the software easier. The resulting code lacks the constants and programmer comments that may have existed in the original high-level programming language that was compiled into binary code.
An inlined function is a function upon which the compiler has performed inline expansion. Inline expansion takes the complete body of the function that has been inlined and inserts the body of the function into every place that a function is called rather than generating code to call the function. Therefore, inlined functions may produce binary code that is voluminous and difficult to analyze. Compilers are not obligated to respect inlining of functions in every instance. A programmer can nonetheless forcefully inline functions in order to thwart reverse engineering attempts.